Skip to content

Conversation

@ThinkOpenly
Copy link
Collaborator

Svadu, roughly, preempts Svade:

If the Svadu extension is implemented, the ADUE bit controls whether hardware updating of PTE A/D bits
is enabled for S-mode and G-stage address translations. When ADUE=1, hardware updating of PTE A/D
bits is enabled during S-mode address translation, and the implementation behaves as though the Svade
extension were not implemented for S-mode address translation. When the hypervisor extension is
implemented, if ADUE=1, hardware updating of PTE A/D bits is enabled during G-stage address
translation, and the implementation behaves as though the Svade extension were not implemented for G-
stage address translation. When ADUE=0, the implementation behaves as though Svade were implemented
for S-mode and G-stage address translation.

Fixes #1217

Svadu, roughly, preempts Svade:
> If the Svadu extension is implemented, the ADUE bit controls whether hardware updating of PTE A/D bits
> is enabled for S-mode and G-stage address translations. When ADUE=1, hardware updating of PTE A/D
> bits is enabled during S-mode address translation, and the implementation behaves as though the Svade
> extension were not implemented for S-mode address translation. When the hypervisor extension is
> implemented, if ADUE=1, hardware updating of PTE A/D bits is enabled during G-stage address
> translation, and the implementation behaves as though the Svade extension were not implemented for G-
> stage address translation. When ADUE=0, the implementation behaves as though Svade were implemented
> for S-mode and G-stage address translation.

Signed-off-by: Paul A. Clarke <[email protected]>
@ThinkOpenly ThinkOpenly changed the title fix(data): Svadu does not conflict with Svade fix(data): extension Svadu does not conflict with Svade Oct 31, 2025
@codecov
Copy link

codecov bot commented Oct 31, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 46.05%. Comparing base (cbee0b7) to head (f5d2391).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1228   +/-   ##
=======================================
  Coverage   46.05%   46.05%           
=======================================
  Files          11       11           
  Lines        4942     4942           
  Branches     1345     1345           
=======================================
  Hits         2276     2276           
  Misses       2666     2666           
Flag Coverage Δ
idlc 46.05% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@jordancarlin
Copy link
Contributor

Looks like another fairly cryptic ISS error. We might need to figure out a way to get better debug messages into the ISS.

@ThinkOpenly
Copy link
Collaborator Author

Looks like another fairly cryptic ISS error. We might need to figure out a way to get better debug messages into the ISS.

Indeed.

./do test:riscv_tests CONFIG=rv32
[...]
terminate called after throwing an instance of 'udb::UndefinedValueError'
  what():  Cannot compare unknown value
/home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/file_utils.rb:65:in `block in create_shell_runner': Command failed with status (): [/home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/gen/cpp_hart_gen/rv32_RelWithDebInfo/build/iss -m rv32 -c /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/cfgs/rv32-riscv-tests.yaml ext/riscv-tests/isa/rv32si-p-dirty] (RuntimeError)
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/file_utils.rb:57:in `sh'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/backends/cpp_hart_gen/tasks.rake:425:in `block (3 levels) in <top (required)>'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/backends/cpp_hart_gen/tasks.rake:424:in `each'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/backends/cpp_hart_gen/tasks.rake:424:in `block (2 levels) in <top (required)>'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/task.rb:281:in `block in execute'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/task.rb:281:in `each'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/task.rb:281:in `execute'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/task.rb:199:in `synchronize'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/task.rb:199:in `invoke_with_call_chain'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/task.rb:188:in `invoke'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/application.rb:188:in `invoke_task'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/application.rb:138:in `block (2 levels) in top_level'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/application.rb:138:in `each'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/application.rb:138:in `block in top_level'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/application.rb:147:in `run_with_threads'
	from /home/pc/projects/riscv/riscv-unified-db/riscv-unified-db/.home/.gems/ruby/3.2.0/gems/rake-13.3.0/lib/rake/application.rb:132:in `top_level'
	from -e:1:in `<main>'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Svadu should not be incompatible with Svade

3 participants